今天第十一堂課要做的是影片播放器。其實影片播放器只需要用一個<video>element就可以產生一個有播放鍵、時間軸、音量軸跟全螢幕按鈕的播放介面,但今天要做的是客製化介面。我們要做能夠調整播放速度還有快進、快退等按鈕的介面。實作範例如下(硬要截一個表情很醜的瞬間):
const method = video.paused?'play':'pause';
video[method]();
就是當video這個element是暫停時,就執行video.play(),反之則執行video.pause()。video[this.name] = this.value;
這邊的this是音量或是播放速度的拉條,兩個拉條的name分別是volume、playbackRate,也是video的兩個屬性。所以可以在一個函式就完成音量跟播放速度的調整。const scrubTime = (e.offsetX/progress.offsetWidth)*video.duration;
video.currentTime = scrubTime;
這邊重點在於滑鼠點擊進度條(progress)時,e.offsetX是相對於進度條element的水平方向長度,而progress.offsetWidth是進度條的總長度。如此一來才能知道點擊的位置是進度條的幾分之幾,並乘上video.duration(影片總時間),轉換成現在播放時間。timeupdate
。progress.addEventListener("mousemove",(e) => mousedown&&scrub(e));
意思是當mousedown為true的時候,才會接著呼叫scrub(e)。